#!/usr/bin/perl 
##########################################################################################################################
##### a script to add object permissions for Users of Wigan-Warriors.com
##########################################################################################################################

##########################################################################################################################
######  TODO list  #######################################################################################################
##########################################################################################################################
##########################################################################################################################

##########################################################################################################################
###### Bug list
##########################################################################################################################
##########################################################################################################################

##########################################################################################################################
# Includes
##########################################################################################################################

use lib qw(../cgi-bin);
use DBI;
use WiganRL;
use WiganRL::DataObject::Squad;
use WiganRL::DataObject::Season;
use Getopt::Long;


use strict;
#use warnings;
local $SIG{__WARN__} = \&Carp::cluck;  #full call back trace

$|++;  #unbuffered


##########################################################################################################################
# site setup and location variable declarations
##########################################################################################################################
my $cfg= WiganRL::DataObject->load_config('../cgi-bin/wiganrl.ini');

my $cgi= CGI::Simple->new();

my $dbh= Diva::DB->new();
$dbh->set( {
	DATABASE_NAME       => $cfg->val('database', 'DATABASE_NAME'),
	DATABASE_SERVER     => $cfg->val('database', 'DATABASE_SERVER'),
	DATABASE_USERNAME   => $cfg->val('database', 'DATABASE_USERNAME'),
	DATABASE_PASSWORD   => $cfg->val('database', 'DATABASE_PASSWORD'),
	DATABASE_TYPE       => $cfg->val('database', 'DATABASE_TYPE'),
	} );
$dbh->connect();
$dbh->debug(0);
WiganRL::DataObject->dbh($dbh);
WiganRL::Search->dbh($dbh);
WiganRL::DataObject->init_class('WWCOM');  #loads contenttypes
WiganRL::DataObject->cgi($cgi);

WiganRL::DataObject->user(WiganRL::DataObject::User->new($cfg->val('site','SITE_ADMINUSER')));

##########################################################################################################################
# get arguments
##########################################################################################################################

my $season_id= WiganRL::DataObject::Season->getSeasonID;
my $squad_name= undef;
my $squad_order= undef;
GetOptions ('season=i' => \$season_id, 'squadName=s' => \$squad_name, 'squadOrder=i' => \$squad_order);

if (not defined $squad_name and not defined $squad_order) {
	$squad_name= 'First Team';
}

my $where= "";
if (defined $squad_name) {
	$where.= "SQUAD_NAME='$squad_name'";
}
if ($where ne "") {
	$where.= " and ";
}
if (defined $squad_order) {
	$where.= "SQUAD_ORDER='$squad_order'";
}
if ($where ne "") {
	$where.= " and ";
}


print "Updating squads from season $season_id and name $squad_name\n\n";

##########################################################################################################################
# get teams
##########################################################################################################################
my $s= WiganRL::Search->new;
$s->table('SQUAD');
$s->where("FK_SEASON_ID=$season_id and $where (FK_STADIUM_ID is null or FK_STADIUM_ID=0)");

for my $squad (@{$s->search}) {
	print "Found squad: ".$squad->id." ".$squad->season->param('SEASON_NAME')." ".
			$squad->club->param('CLUB_NAME')." ".$squad->param('SQUAD_NAME')."\n";
	#find a squad from the same club and type with a stadium set
	my $s2= WiganRL::Search->new;
	$s2->table('SQUAD');
	$s2->where("FK_CLUB_ID=".$squad->club->id." and $where (not FK_STADIUM_ID is null or FK_STADIUM_ID<>0)");
	my $res= $s2->search;
	if ($#$res>=0 and $res->[0]->stadium->loaded) {
		@$res= sort {$b->season->param('SEASON_STARTDATE') cmp $a->season->param('SEASON_STARTDATE')} @$res;
		$cgi->param('FK_STADIUM_ID',$res->[0]->stadium->id);
		$squad->update;
		print "\tUpdated Squad: ".$squad->id." ".$squad->season->param('SEASON_NAME')." ".
			$squad->club->param('CLUB_NAME')." ".$squad->param('SQUAD_NAME')." with stadium ".$res->[0]->stadium->param('STADIUM_NAME').
			" from season ".$res->[0]->season->param('SEASON_NAME')."\n";
	}	
}
	

